/**
 * 公共js文件
 */
/**
	 * 序列化对象
	 * @param formId
	 * @returns {___anonymous1382_1383}
	 */
function serializeFormObj(formId) {
	var paramArray = $("#" + formId).serializeArray();
	var paramObjs = {};
	for (var i = 0; i < paramArray.length; i++) {
		var paramObj = {};
		paramObj[paramArray[i].name] = paramArray[i].value;
		$.extend(paramObjs, paramObj);
	}
	return paramObjs;
}
/**
 * 弹出提示框
 * @param msg
 * @param fn
 * @returns
 */
function confirmMessager(msg,fn){
	$.messager.confirm('提示',msg,fn);
}
/**
 * 打开dialog 
 * @param id 
 * @param title 
 */
function openDialog(id, title) {
	$('#' + id).dialog({
		title : title,
		iconCls:'icon-title',
		cache : false,
		modal : true,
		constrain:true,
		resizable:true,
		onLoad : function(){
		},
		onOpen : function() {
		},
		onBeforeOpen: function() {
			var formId = id.substr(3, id.length - 3);
			if ($('#form' + formId)) {
				$('#form' + formId).form('clear');
//				$('#form' + formId).form('disableValidation');
			}
		}
	});
	
	var dlgWidth = $('#' + id).dialog('options').width;
	var dlgHeight = $('#' + id).dialog('options').height;
	var winWidth = $('.tabs-panels',parent.document).width();
	var winHeight = $('.tabs-panels',parent.document).height();
	var top =  $('#' + id).dialog('options').top;
	var left =  $('#' + id).dialog('options').left;
	if(dlgHeight >= winHeight){
		$('#' + id).dialog('resize',{height:winHeight-100,top:20})
	}
	if(dlgWidth >= winWidth){
		$('#' + id).dialog('resize',{width:winWidth-50,left:20})
	}
	
	$('#' + id).dialog('open');
	$('#' + id).parents('.panel').css('position','fixed');
}

$.extend($.fn.form.defaults,{
	onSubmit: function(param){
		debugger
		var valid = $(this).form('validate');
		if(!valid && $(this).form('options').finalTask){
			$(this).form('options').finalTask.call(this);
		}
		return valid;
	},
	success: function(data) {
		if($(this).form('options').finalTask){
			$(this).form('options').finalTask.call(this);
		}
		if (isEmptyObject(data)) {
			showErrorMsg('服务器端异常');
			return;
		}
		var result = data;
		if (typeof data == 'string') {
			result = eval('('+ data +')');
		}
		if (result.success) {
			showTips(result.message,'success');
			if ($(this).form('options').task) {
				$(this).form('options').task.call(this, result);
			}
		} else {
			showError(result);
		}
	}
});

/**
 * alert error消息功能
 * @param msg 消息内容
 * @param fn 回调方法(可选参数)
 * @param args 回调方法参数(可选参数)
 * @param title 消息标题(可选参数)
 */
function showErrorMsg(msg, fn ,args, title) {
	if (isEmptyObject(msg)) {
		return;
	}
	var	infoTitle = !title ? '错误提示' : title;
	var msg = "<p>"+msg+"</p>";
	if (!fn) {
		$.messager.alert(infoTitle, msg, 'error');
		return;
	} 
	$.messager.alert(infoTitle, msg, 'error', function(){
		fn.apply(this, args);
	});
} 

/**
 * 消息功能(右下角)
 * @param msg 消息内容
 * @param type 消息类型 success(成功)、error（错误）、warning（警告）、info（普通消息）
 * @param timeout 超时时间,默认3000毫秒(可选参数)
 */
function showTips(msg, type, timeout) {
	if (isEmptyObject(msg)) {
		return;
	}
	var	infoTitle = type=='success'?'成功':(type=='error'?'错误':(type=='warning'?'警告':'消息'));
	var infoDom = '<div style="font-size:15px;font-weight:bold;margin-top:0;color:#464c5b;">'+infoTitle+'</div><div style="margin-top:5px;color:#777272;">' + msg + '</div><div class="panel-tool" style="top:15px;right:5px;color: #657180;"><a class="panel-tool-close" ></a></div>';
	var msg;
	if(type=='success'){
		msg = '<div class="messager-icon messager-success"></div>'+infoDom;
	}else if(type=='error'){
		msg = '<div class="messager-icon messager-error"></div>'+infoDom;
	}else if(type=='warning'){
		msg = '<div class="messager-icon messager-warning"></div>'+infoDom;
	}else{
		msg = '<div class="messager-icon messager-info" ></div>'+infoDom;
	}
	var infoTimeout = !timeout ? 3000 : timeout;
	var msgtip = $.messager.show({
		msg: msg,
		timeout: infoTimeout,
		showType: 'fade',
		height:'83'
	});
	$('.messager-body').parents('.panel').css('right','5px');
	$('.messager-body').parents('.panel').css('bottom','100px');
	$('.messager-body').parents('.panel').css('border-radius','4px');
	$('.panel-tool').bind('click',function(){
		msgtip.window('close');
	})
}

/**
 * 判断对象是否为null
 * @param obj
 * @returns {Boolean}
 */
function isEmptyObject(obj) {
  for (var key in obj) {
    return false;
  }
  return true;
}

/**
 * 展示错误信息
 * @param data
 * @returns
 */
function showError(data){
	console.log(data);
	if (data && isEmptyObject(data.stackTrace)) {
		showErrorTip(data.message);
		return;
	}
	openWindow({
        id: 'winErrorDetail',
        title: '错误信息',
        width: 500,
        height:300,
        url: '../error/toErrorDetail.do',
        onLoad : function() {
        	$('#divErrorTitle').html(data.message);
        	$('#divErrorDetail').html(data.stackTrace);
        },
        onSave: function () {}
    })
}

/**
 * 打开dialog
 * @param param
 */
function openWindow(param) {
	var winWidth = $('.tabs-panels',parent.document).width();
	var winHeight = $('.tabs-panels',parent.document).height();
	$('#' + param.id).dialog({
		title : param.title,
		width : param.width<winWidth ? param.width : winWidth-50,
		height : param.height<winHeight ? param.height : winHeight-20,
		href : param.url,
		modal:true,
		constrain:true,
		onSave : function(d) {
			if (param.onSave) {
				param.onSave.call(this, d);
			}
		},
		onLoad : function(d) {
			if (param.onLoad) {
				param.onLoad.call(this, d);
			}
		}
	});
	$('#' + param.id).dialog('open');
	$('#' + param.id).parents('.panel').css('position','fixed');
}